package Java网络编程;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*UDP接收数据
* 1.创建接收的Socket对象
* 2.创建一个数据包，用于接收数据
* 3.调用DatagramSocket对象的方法接收数据
* 4.解析数据包，并把数据在控制台显示
* 5.关闭接收端*/
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //1.创建接收的Socket对象
        //DatagramSocket(int port)
        //构造数据报套接字并将其绑定到本地主机上的指定端口
        DatagramSocket ds = new DatagramSocket(10086);
        //2.创建一个数据包，用于接收数据
        byte[] bys = new byte[1024];
        //DatagramPacket(byte[] buf, int length)
        //构造一个 DatagramPacket用于接收长度的数据包 length。
        DatagramPacket dp = new DatagramPacket(bys, bys.length);
        //3.调用DatagramSocket对象的方法接收数据
        ds.receive(dp);
        //4.解析数据包，并把数据在控制台显示
        /*//byte[] getData()
        //返回数据缓冲区。
        byte[] data = dp.getData();
        //int getLength()
        //返回要发送的数据的长度或接收到的数据的长度。
        int len = dp.getLength();
        String data_string = new String(data,0,len); //字节转字符串
        System.out.println("接收端收到数据为："+data_string);*/

        /*懒人写法*/
        String data_string = new String(dp.getData(),0,dp.getLength());
        System.out.println("接收端收到数据为："+data_string);
        //关闭接收端
        ds.close();
    }
}
